package unit04.day02;

import java.io.Serializable;
import java.util.List;

/**
 * 该类用于测试作为对象流读写对象使用
 * @author cola
 *签名接口，标注可序列化
 */
public class Person implements Serializable{
	/*
	 * 当一个类实现了Serializable接口后应当添加一个常量：serialVersionUID
	 * 该常量为当前类的序列化版本号，若不定义，系统会根据当前类的结构生成
	 * 但是只要类的结构发生改变，版本号也会相应发生改变
	 * 
	 * 版本影响着反序列化的结果，即：
	 * 当OIS对一个对象进行反序列化时，会检查该对象与类的版本是否一致：
	 * 若一致，反序列化程刚，但是若该对象与类的结构不一致时，则采用兼容模式，能还原的属性都还原
	 * 若不一致，反序列化直接抛出版本不一致异常
	 * */
	private static final long serialVersionUID = 1L;
	private String name;
	 private int salary;
	 private String gender;
	 
	 //可以可无的属性使用transient修饰
	 private transient List<String> otherInfo;
	 
	 public Person() {
		 
	 }
	 
	public Person(String name, int salary, String gender, List<String> otherInfo) {
		super();
		this.name = name;
		this.salary = salary;
		this.gender = gender;
		this.otherInfo = otherInfo;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getSalary() {
		return salary;
	}

	public void setSalary(int salary) {
		this.salary = salary;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public List<String> getOtherInfo() {
		return otherInfo;
	}

	public void setOtherInfo(List<String> otherInfo) {
		this.otherInfo = otherInfo;
	}
	
	public String toString() {
		return name+","+salary+","+gender+","+otherInfo;
	}
}
